import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 进度明细 控制器 / 进度明细 控制器添加进度明细
 * @param {object} data
 * @param {string} [data.actualCompletionTime] 实际完成时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.actualStartTime] 实际开始时间 YYYY-MM-DD HH:mm:ss
 * @param {number} [data.completionPercentage] 完成百分比
 * @param {number} [data.ganttChartId] 进度甘特图主键id
 * @param {string} [data.progressName] 进度名称
 * @param {string} [data.remarks] 备注
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ProgressDetails页面展示实体>}
 */
export function progressDetailsAdd(data, config) {
  return post("/progressDetails/add", data, config);
}

/**
 * 进度明细 控制器 / 进度明细 控制器删除进度明细
 * @param {object} params
 * @param {object} data
 * @param {string} params.id 进度明细ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ProgressDetails页面展示实体>}
 */
export function progressDetailsDelete(params, data, config) {
  return postWithQueryParams("/progressDetails/delete", params, data, config);
}

/**
 * 进度明细 控制器 / 进度明细 控制器查询进度明细详情
 * @param {object} params
 * @param {string} params.id 进度明细ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ProgressDetails页面展示实体>}
 */
export function progressDetailsDetail(params, config) {
  return get("/progressDetails/detail", params, config);
}

/**
 * 进度明细 控制器 / 进度明细 控制器分页查询进度明细
 * @param {object} data
 * @param {number} [data.id] 主键
 * @param {number} [data.length] 分页大小
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {number} [data.start] 查询记录起始下标
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<ProgressDetails页面展示实体>>}
 */
export function progressDetailsList(data, config) {
  return post("/progressDetails/list", data, config);
}

/**
 * 进度明细 控制器 / 进度明细 控制器更新进度明细
 * @param {object} data
 * @param {string} [data.actualCompletionTime] 实际完成时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.actualStartTime] 实际开始时间 YYYY-MM-DD HH:mm:ss
 * @param {number} [data.completionPercentage] 完成百分比
 * @param {number} [data.ganttChartId] 进度甘特图主键id
 * @param {number} [data.id] 主键
 * @param {string} [data.progressName] 进度名称
 * @param {string} [data.remarks] 备注
 * @param {string} [data.reportPerson] 上报人
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ProgressDetails页面展示实体>}
 */
export function progressDetailsUpdate(data, config) {
  return post("/progressDetails/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} ProgressDetails页面展示实体 进度明细页面展示实体
 * @property {string} actualCompletionTime 实际完成时间
 * @property {string} actualStartTime 实际开始时间
 * @property {boolean} canDelete 是否拥有删除权限
 * @property {boolean} canEdit 是否拥有编辑权限
 * @property {number} completionPercentage 完成百分比
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {string} createUserDeptName 编制部门
 * @property {string} createUserRealName 编制人姓名
 * @property {number} delFlag 是否已删除(0否；1是)
 * @property {number} ganttChartId 进度甘特图主键id
 * @property {number} id 主键
 * @property {string} progressName 进度名称
 * @property {string} remarks 备注
 * @property {string} reportPerson 上报人
 * @property {string} updateTime 更新时间
 * @property {string} updateUser 更新用户
 * @description 进度明细页面展示实体
 */
